﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Sispe.Entities;
using Sispe.BussinesLogic;
using Microsoft.Practices.Unity;

namespace Sispe.UI
{
    public partial class FrmHojaRecorridoObrero : Form
    {
        [Dependency]
        public IHojaDeRecorridoBL hojaBL { get; set; }

        [Dependency]
        public IUsuarioBL usuarioBL { get; set; }

        [Dependency]
        public ILiquidacionBL liquidacionBL { get; set; }

        public int IdContrato;
        public string dni;
        public int IdAreaLiquidacion;

        public FrmHojaRecorridoObrero()
        {
            InitializeComponent();
            this.BuildUp();
        }
        
        public void Editar()
        {
            //var contrato = hojaBL.GetHojaObreroFromIdContrato(IdContrato);
            //hOJA_FIN_RECORRIDO_OBREROBindingSource.DataSource = contrato;
            CargarDatos();
        }

        private void FrmHojaRecorridoObrero_Load(object sender, EventArgs e)
        {
            EnableDisable();
        }

        private void EnableDisable()
        {
            aC_EPPCOmentarioTextBox.Enabled = aC_EPPCheckBox.Checked ? true : false;
            aC_OtrosComentarioTextBox.Enabled = aC_OtrosCheckBox.Checked ? true : false;
            rRHH_OtrosComentarioTextBox.Enabled = rRHH_OtrosCheckBox.Checked ? true : false;
        }

        private void CargarDatos()
        {
            //var contrato = contratoBL.GetFromContratoById(IdContrato);
            //cONTRATOBindingSource.DataSource = contrato;

            //cONTRATOBindingSource.DataSource = contratoBL.GetFromContratoById(IdContrato);

            var contrato = hojaBL.GetHojaObreroFromIdContrato(IdContrato);
            hOJA_FIN_RECORRIDO_OBREROBindingSource.DataSource = contrato;

            var liquidacion = liquidacionBL.GetFromLiquidacionByNumeroContrato(IdContrato);

            if (liquidacion.SeguiraTrabajando == true)
            {
                lblEstado.Text = "Seguirá trabajando.";
                rRHH_ExamenRetiroCheckBox.Enabled = false;
            }
            else
            {
                lblEstado.Text = "Cese Definitivo.";
            }

            var usuario = usuarioBL.GetAllFromUsuarioByPersonaId(dni);

            if (usuario.IdAreaLiquidacion == 2) // RRHH
            {
                gbRRHH.Enabled = true;                
                gbAlmacenCentral.Enabled = false;                
            }
            else if (usuario.IdAreaLiquidacion == 5) // Logistica Sistemas
            {
                gbRRHH.Enabled = false;
                gbAlmacenCentral.Enabled = true;
            }
        }

        private void btnAprobarRRHH_Click(object sender, EventArgs e)
        {
            var _current = hOJA_FIN_RECORRIDO_OBREROBindingSource.Current as HOJA_FIN_RECORRIDO_OBRERO;

            var msg = "ERROR!";

            try
            {
                _current.RRHH_VistoBueno = true;
                _current.RRHH_Fecha = DateTime.Now.Date;
                hojaBL.UpdateHojaRecorridoObrero(_current, IdAreaLiquidacion);
                MessageBox.Show("Liquidación Aprobada", "Liquidación.", MessageBoxButtons.OK, MessageBoxIcon.Information);
                this.Close();
            }
            catch (Exception ex)
            {
                msg = ex.Message;
                MessageBox.Show(msg, "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }

        private void btnAprobarAC_Click(object sender, EventArgs e)
        {
            var _current = hOJA_FIN_RECORRIDO_OBREROBindingSource.Current as HOJA_FIN_RECORRIDO_OBRERO;

            var msg = "ERROR!";

            try
            {
                _current.AC_VistoBueno = true;
                _current.AC_Fecha = DateTime.Now.Date;
                hojaBL.UpdateHojaRecorridoObrero(_current, IdAreaLiquidacion);
                MessageBox.Show("Liquidación Aprobada", "Liquidación.", MessageBoxButtons.OK, MessageBoxIcon.Information);
                this.Close();
            }
            catch (Exception ex)
            {
                msg = ex.Message;
                MessageBox.Show(msg, "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }

        private void btnDesaprobarAC_Click(object sender, EventArgs e)
        {
            if (aC_VistoBuenoCheckBox.Checked)
            {
                var _current = hOJA_FIN_RECORRIDO_OBREROBindingSource.Current as HOJA_FIN_RECORRIDO_OBRERO;

                var msg = "ERROR!";

                try
                {
                    _current.AC_VistoBueno = false;
                    _current.AC_Fecha = DateTime.Now.Date;
                    hojaBL.UpdateHojaRecorridoObrero(_current, IdAreaLiquidacion);
                    MessageBox.Show("Liquidación Desaprobada", "Liquidación.", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    this.Close();
                }
                catch (Exception ex)
                {
                    msg = ex.Message;
                    MessageBox.Show(msg, "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            else
            {
                MessageBox.Show("Liquidación Desaprobada", "Liquidación.", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }

        private void btnDesaprobarRRHH_Click(object sender, EventArgs e)
        {
            if (rRHH_VistoBuenoCheckBox.Checked)
            {
                var _current = hOJA_FIN_RECORRIDO_OBREROBindingSource.Current as HOJA_FIN_RECORRIDO_OBRERO;

                var msg = "ERROR!";

                try
                {
                    _current.RRHH_VistoBueno = false;
                    _current.RRHH_Fecha = DateTime.Now.Date;
                    hojaBL.UpdateHojaRecorridoObrero(_current, IdAreaLiquidacion);
                    MessageBox.Show("Liquidación Desaprobada", "Liquidación.", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    this.Close();
                }
                catch (Exception ex)
                {
                    msg = ex.Message;
                    MessageBox.Show(msg, "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            else
            {
                MessageBox.Show("Liquidación Desaprobada", "Liquidación.", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }

        private void aC_EPPCheckBox_CheckedChanged(object sender, EventArgs e)
        {
            EnableDisable();
        }

        private void aC_OtrosCheckBox_CheckedChanged(object sender, EventArgs e)
        {
            EnableDisable();
        }

        private void rRHH_OtrosCheckBox_CheckedChanged(object sender, EventArgs e)
        {
            EnableDisable();
        }
    }
}
